package com.cskaoyan.javase.oop1._8review._1pvz;

/**
 * 植物类
 * （攻击）植物
 *     属性：血量，攻击力，名字，价格
 *     行为：攻击，被攻击
 *
 * @since 11:00
 * @author wuguidong@cskaoyan.onaliyun.com
 */
public class Plant {
    int hp;
    int damage;
    String name;
    int price;

    // 持有僵尸类对象的引用
    Zombie plantZ;

    /*
        在植物大战僵尸中，植物和僵尸存在交互
        在这个过程中，需要交换互相的信息
        有两种做法：
             1.可以把双方的对象作为方法的形参传入（少数次使用可以，但是次数多会麻烦）
             2.可以直接把对方对象的引用作为自身的成员变量，互相持有引用（更方便）

     */
    public void attack() {
        System.out.println(name + "正在攻击" + plantZ.name);
    }

    /**
     * 植物被僵尸攻击，返回剩余血量
     * @since 11:11
     * @return int
     * @author wuguidong@cskaoyan.onaliyun.com
     */
    public int beAttacked() {
        System.out.println(name + "正在被" + plantZ.name + "攻击了");
        return this.hp - plantZ.damage;
    }

    // 构造器

    public Plant() {
    }

    public Plant(int hp, int damage, String name, int price) {
        this.hp = hp;
        this.damage = damage;
        this.name = name;
        this.price = price;
    }
}
